15#ifndef RAPIDJSON_INTERNAL_STRFUNC_H_
16#define RAPIDJSON_INTERNAL_STRFUNC_H_
21RAPIDJSON_NAMESPACE_BEGIN
39inline SizeType StrLen(
const char* s) {
44inline SizeType StrLen(
const wchar_t* s) {
55inline int StrCmp(
const Ch* s1,
const Ch* s2) {
58 while(*s1 && (*s1 == *s2)) { s1++; s2++; }
59 return static_cast<unsigned>(*s1) <
static_cast<unsigned>(*s2) ? -1 :
static_cast<unsigned>(*s1) >
static_cast<unsigned>(*s2);
63template<
typename Encoding>
64bool CountStringCodePoint(
const typename Encoding::Ch* s, SizeType length, SizeType* outCount) {
67 GenericStringStream<Encoding> is(s);
68 const typename Encoding::Ch* end = s + length;
70 while (is.src_ < end) {
72 if (!Encoding::Decode(is, &codepoint))
81RAPIDJSON_NAMESPACE_END
#define RAPIDJSON_ASSERT(x)
Assertion.
定义 rapidjson.h:437
unsigned SizeType
Size type (for string lengths, array sizes, etc.)
定义 rapidjson.h:415